package br.catraca.servlets;

import br.catraca.controlador.*;
import br.catraca.modelo.Administrador;
import br.catraca.modelo.Departamento;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Servlet implementation class CatracaServlet
 */
@WebServlet("/CatracaServlet")
public class CatracaServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CatracaServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
    @Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // TODO Auto-generated method stub
        String parametro = request.getParameter("chamarControlador");
        
	if (parametro.equals("historico")){
            
            String matricula = request.getParameter("matricula");
            ControladorRegistroEntrada registroEntrada = new ControladorRegistroEntrada();
            boolean status = registroEntrada.getRegistroEntrada(request, matricula);
            
            response.sendRedirect("TabelaHistorico.jsp");        
                    
                    
            
        } else if (parametro.equals("excluirDepartamento")) {	
            
            String matricula = request.getParameter("matricula");
            
            ControladorFuncionario ctrlFuncionario = new ControladorFuncionario();
            
            ctrlFuncionario.removerDoDept(request, matricula);
            
            response.sendRedirect("TabelaFuncionarios_2.jsp");
            
            
	
        }  else if(parametro.equals("excluirDepartamentoHOME" )) {
            
            String matricula = request.getParameter("matricula");
            
            ControladorFuncionario ctrlFuncionario = new ControladorFuncionario();
            
            ctrlFuncionario.removerDoDept(request, matricula);
            
            response.sendRedirect("formFuncionarios.jsp");           
                    
        } else if (parametro.equals("excluirAlunoDepartamento")){
        
            String matricula = request.getParameter("matricula");
            
            ControladorAluno ctrlAluno = new ControladorAluno();
            
            ctrlAluno.removerDoDept(request, matricula);
            
            response.sendRedirect("formFuncionarios.jsp");
            
        } else if (parametro.equals("excluirDepartamento3")) {
            
            
                        String  valorDepartamento = request.getParameter("nomeDept");
           
                        Controlador controlador = new Controlador();			          
			boolean status = controlador.excluirDepartamento(valorDepartamento);
                        HttpSession secao = request.getSession();
			if (!status){
                        
                        secao.setAttribute("confirma", status);
                        }
                        
			List <Departamento> departamento = controlador.listarDepartamentos();
                        secao.setAttribute("departamentos", departamento);
			response.sendRedirect("TabelaDepartamentos_Novo.jsp"); 
            
            
        }else if(parametro.equals("associarTabela")){
                     
                        HttpSession secao = request.getSession();
                        String nomeDept = request.getParameter("nomeDept_txt");
                        secao.setAttribute("nomeDept", nomeDept);
                        response.sendRedirect("departamentosAssociarFuncionarios.jsp");
                        
                        
                    } else if (parametro.equals("historicoAluno")){
                        
            String matricula = request.getParameter("matricula");
            ControladorRegistroEntrada registroEntrada = new ControladorRegistroEntrada();
            boolean status = registroEntrada.getRegistroEntrada(request, matricula);
            response.sendRedirect("alunos.jsp");
                    
                    }else {
            
            Controlador controlador = new Controlador();
           boolean status = controlador.listarFuncionarioNoDepartamento(request, parametro);
		
	    response.sendRedirect("formFuncionarios.jsp");
        }
		
				
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
    
    
    
    
    @Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		String parametro = request.getParameter("chamarControlador");
		Controlador controlador = new Controlador();
		
               
		if (parametro.equals("validar")){
			
			String login = request.getParameter("login_txt");
			String senha = request.getParameter("senha_txt");
			List <Administrador> administrador = new ArrayList();
			
			administrador = controlador.validarLogin(login,senha);
			// Se a verificação no banco vir vazio, redireciona p/ uma página de erro.
			if (administrador.isEmpty()){
				response.sendRedirect("Erro.jsp");
			} else {
				HttpSession secao = request.getSession();
				secao.setAttribute("administrador", administrador.get(0));
				
				List <Departamento> departamento = controlador.listarDepartamentos();
				
				secao.setAttribute("departamentos", departamento);
                                
                                ControladorCurso controladorCurso = new ControladorCurso();
                                secao.setAttribute("cursos", controladorCurso.listarCurso());
                                
				response.sendRedirect("Departamentos.jsp");
				
			}
			
						
		} else if (parametro.equals("Excluirdepartamento")){
			
                    
			String  valorDepartamento = request.getParameter("excluirDepartamento");
                        HttpSession secao = request.getSession();                        			          
			boolean status = controlador.excluirDepartamento(valorDepartamento);
                        if (!status){
                        
                        secao.setAttribute("confirma", status);
                        }
			
			List <Departamento> departamento = controlador.listarDepartamentos();
			
			secao.setAttribute("departamentos", departamento);
			response.sendRedirect("TabelaDepartamentos.jsp");
	
	
		} else if (parametro.equals("carregar")){
                    
                    //pega id do departamento slecionado no checkbox
                    String  deptSelect = request.getParameter("deptSelect");
                    boolean status = controlador.listarFuncionarioNoDepartamento(request,deptSelect );
		
                    if (status == true){
                    
                    response.sendRedirect("departamentosDetalhes.jsp");
                    } else{
                        controlador.pegarNomeDoDepartamentoNaLista(request, deptSelect);
                        response.sendRedirect("departamentosDetalhesVazio.jsp");
                        
                    }
                    
                    
                } else if (parametro.equals("novoDepartamento")){
                    String nomeDept = request.getParameter("nomeDept_txt");
                    HttpSession secao = request.getSession();
                    if ("".equals(nomeDept)){
                     secao.setAttribute("confirma", "");
                     response.sendRedirect("novoDepartamento.jsp");
                    }else{
                    secao.setAttribute("nomeDept", nomeDept);
                    response.sendRedirect("departamentosAssociarFuncionarios.jsp");
                    }
                } else if (parametro.equals("radio_aluno")){
                    
                     ControladorAluno ctrlAluno = new ControladorAluno();
                     String nomeCurso = request.getParameter("curso_combo");
                     ctrlAluno.listarAlunosNoCurso(request, nomeCurso);
                     response.sendRedirect("departamentosAssociarAluno.jsp");
                                        
                    
                } else if (parametro.equals("radio_func")){
                    
                    ControladorFuncionario ctrlFuncionario = new ControladorFuncionario();
                    
                    ctrlFuncionario.listarFuncionariosNulos(request);
                    
                    response.sendRedirect("departamentosAssociarFuncionarios.jsp");
                    
                } else if (parametro.equals("Associar")){
                    
                    String[] pessoasAssociar = request.getParameterValues("sel_aluno");
                    
                    ControladorFuncionario ctrlFuncionario = new ControladorFuncionario();
                    
                    ctrlFuncionario.associarFuncionario(request, pessoasAssociar);
                    response.sendRedirect("TABELA_ASSOCIAR_CONFIRMA.jsp");                   
                    
                    
                    } else if (parametro.equals("AssociarAluno")){
                        
                        HttpSession secao=request.getSession();
                        String[] pessoasAssociar = request.getParameterValues("sel_aluno");
                       ControladorAluno ctrlAluno = new ControladorAluno();
                       // pega o nome da sessao, guardado no ControladorAluno
                       String nomeCurso = (String) secao.getAttribute("nomeCurso");
                      ctrlAluno.associarAluno(request, nomeCurso,pessoasAssociar);               
                       response.sendRedirect("TABELA_ASSOCIAR_ALUNO_CONFIRMA.jsp");                   
                        
                    } else if(parametro.equals("listarAlunos")){
                        
                     ControladorAluno ctrlAluno = new ControladorAluno();
                     HttpSession secao = request.getSession();
                     String nomeCurso = request.getParameter("cursoSelect");
                     
                                         
                     secao.setAttribute("listaAlunos",ctrlAluno.listarTodosAlunos(nomeCurso));
                     response.sendRedirect("alunos.jsp");
                    
                    
                    } else if(parametro.equals("buscarAluno")){
                        
                      HttpSession secao = request.getSession();
                      ControladorAluno ctrlAluno = new ControladorAluno();
                      String buscaAluno = request.getParameter("pesquisa");
                                            
                      secao.setAttribute("listaAlunos", ctrlAluno.buscarAluno(buscaAluno));
                      
                      if (ctrlAluno.buscarAluno(buscaAluno).isEmpty()){
                          
                          secao.setAttribute("alunoNaoEncontrado", "alunoNaoEncontrado");
                      }
                      
                      response.sendRedirect("alunos.jsp");
                        
                    }else {
                        
                        /*Entra neste else quando o botão o botão visualizar
                         * da página departamentosAssociarFuncionarios.jsp for clicado
                         * e nenhum rádio button tiver sido clicado.
                         */
                        HttpSession secao = request.getSession();
                        secao.setAttribute("confirma", "");
                        response.sendRedirect("departamentosAssociarFuncionarios.jsp");
                                            
                        
                    }
		
	}
        }


